package io.jt808.proto.req;

import io.norland.annotations.Proto;
import io.norland.buffer.AutoBuffer;
import io.norland.proto.IProto;
import io.jt808.proto.item.ParameterItem;
import io.jt808.proto.item.ParameterItemUtil;
import lombok.Data;

import java.util.ArrayList;
import java.util.List;

/**
 * 查询终端参数应答
 */
@Proto("0104")
@Data
public class JT0104 implements IProto {
    /**
     * 应答流水号,对应的终端参数查询消息的流水号
     */

    private int responseMessageSerialNo;
    /**
     * 应答参数个数
     */
    private short parametersCount;
    /**
     * 参数项列表
     */
    private List<ParameterItem> parameters;

    public final byte[] writeToBytes() {
        AutoBuffer buff = new AutoBuffer();
        buff.writeShort(responseMessageSerialNo);
        buff.writeByte(parametersCount);
        ParameterItemUtil.writeParamByte(buff, parameters);
        return buff.array();

    }

    public final void readFromBuf(AutoBuffer buff) {
        responseMessageSerialNo = buff.readUnsignedShort();
        parametersCount = buff.readByte();
        parameters = new ArrayList<>();
        ParameterItemUtil.readParamByteFromBuf(buff, parameters);
    }

//    public static void main(String[] agrs) {
//        byte[] bytes = new byte[]{
//                0x00, 0x01,
//                0x01,
//                0x00, 0x00, 0x01, 0x05,
//                0x06,
//                0x01, 0x02, 0x03, 0x04, 0x05, 0x06
//        };
//
//        JT0104 jt0104 = new JT0104();
//        jt0104.readFromBuf(new AutoBuffer(bytes));
//        System.out.println(new String(bytes).equals(new String(jt0104.writeToBytes())));
//    }

}